// #include<iostream>
// #include<cstring>
// using namespace std;
// const int N = 1e4+10;
// int dp[N];
// char a[N];
// char b[N];
// int main()
// {
//     ios::sync_with_stdio(false);
//     cin.tie(0);
//     cout.tie(0);
//     scanf("%s%s",a+1,b+1);
//     int len1=strlen(a+1);
//     int len2=strlen(b+1);
//     int ans=-1;
//     for(int i=1;i<=len1;i++)
//     {
//         for(int j=len2;j>=1;j--)
//         {
//             if(a[i]==b[j]&&a[i]>'9'&&b[j]>'9'){
//                 dp[j]=dp[j-1]+1;
//                 ans=max(ans,dp[j]);
//             }else dp[j]=0;
//         }
//     }
//     if(ans==-1) cout << 0;
//     else cout << ans;
//     return 0;
// }

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e4+10;
int dp[N];
char a[N];
char b[N];
char rec[N];
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    scanf("%s%s",a+1,b+1);
    int len1=strlen(a+1);
    int len2=strlen(b+1);
    int ans=-1;
    int x=0,y=0;
    for(int i=1;i<=len1;i++)
    {
        for(int j=len2;j>=1;j--)
        {
            if(a[i]==b[j]&&a[i]>'9'&&b[j]>'9'){
                dp[j]=dp[j-1]+1;
                if(ans<dp[j]){
                    ans=dp[j];
                    x=i;
                    y=j;
                }
            }else dp[j]=0;
        }
    }
    if(ans==-1) cout << 0;
    else{
        cout << ans << endl;
        int count=ans;
        while(x>0&&y>0)
        {
            if(a[x]==b[y]){
                rec[count--]=a[x];
                --x;
                --y;
            }
        }
        for(int i=1;i<=ans;i++){
            cout << rec[i] << " ";
        }
    }
    return 0;
}